[Xcode] ビルド環境を切り替えるためにSchemeを追加する
はじめに
おばんです、Counter-Strike: GOというFPSをやっていたら、同じチームの海外勢が「すごーい」「すっごーいwwあっはっはwwうぇw」と連呼していて世界は平和だな、と思った田中です。
今回はビルド環境を切り替えるためにSchemeを追加する方法とその周辺設定を紹介します。Xcodeの設定方法を説明する箇所が多いので、わかりやすくするために画像を多くして紹介していきます。
Schemeを切り替えることでできること
Schemeを切り替えることで #if, #elseif, #else(, #endif)
による分岐を行うことができます。これは例えば以下のような書き方。
#if DEBUG print("デバッグ環境") #elseif STUB print("スタブ環境") #else print("その他環境") #endif
通常のif分岐とは異なり、分岐する条件にビルド環境を用いることができるようになります。
ちなみにDebug環境とRelease環境はプロジェクト作成時にデフォルトで存在しています。
こんな時に役立つ
基本的には本番環境とテスト環境の切り替えの時によく使います。具体的には以下の二つです。
- APIの接続先の変更
- Mockへの切り替え
APIの接続先の変更
var baseURL: String #if MYDEBUG baseURL = "https://hogehoge-stg.com/" #else baseURL = "https://hogehoge.com/" #endif
Mockへの切り替え
var bleManager: BLEManager #if MYDEBUG bleManager = BLEManagerMock() #else bleManager = BLEManager() #endif
設定手順
Schemeの追加
ビルドターゲットを変更するボタン(Set the active scheme)をクリックして、Manage Schemes
を選択します。
開いたウィンドウ上でDuplicate対象のScheme(今回はプロジェクトにもともとあったもの)を選択して、設定ボタンからDuplicateを選択します。
するとまた新たにウィンドウが開くので、下の画像の箇所からSchemeに名前をつけます。
再度ビルドターゲットを変更するボタン(Set the active scheme)をクリックして、今追加したSchemeが存在すればSchemeの追加は完了です。
Build Configurationを追加する
Project > Info > Configurations
の順に選択していき、Duplicate対象のConfigurationを選択します。今回はDEBUG。
+ボタンを押してDuplicateします。
追加されたコピーに任意の名前をつけます。今回はMyDebug。
Edit Schemeを選択し、
対象のビルドターゲットのBuild Configurationを新しく作ったものに選択します。
Preprocessor Macrosの追加
Targets > Build Settings > Preprocessor Macrosで検索 > Preprocessor Macros
のMyDebugの項目を確認します。
$(inherited)を削除し、MYDEBUG=1(任意の名前)を入力します。
Other Swift Flagsの設定
Targets > Build Settings > Other Swift Flagsで検索 > Other Swift Flags
のMyDebugの項目に -D MYDEBUG(任意の名前) と入力します。
これで設定は完了です。
動作確認
簡単に動作確認するのであれば、ビルドターゲットを新しく作ったものを選択して
以下のコードで確認可能です。viewDidLoadなどに書いて実行して、"MYDEBUG"とprintされれば成功です。
#if MYDEBUG print("MYDEBUG") #else print("OTHER") #endif
まとめ
ビルド環境を切り替えるためにSchemeを追加する方法とその周辺設定を紹介しました。
APIの接続先やBLEなど、外部環境が関わる部分にStaging環境やモックを用意してデバッグしていくことは多いと思います。その際に今回紹介した方法が有用かと思われます。お役立ていただければ幸いです。